
var erro="出错了"
	
$(function(){
	initAdminTree()
	initRoleTree()
	initMenuTree()
})

function initAdminTree() {
	/*初始化管理员树*/
	$.ajax({
		url:"/adminlist",
		type:'post',
		success:function(data){
			var admin_setting = {
					callback : {
						onClick : function(event, treeId, treeNode) {
							selectadmin(event, treeId, treeNode);
						},
						onCheck: function(event, treeId, treeNode) {
							selectadmin(event, treeId, treeNode);
						},
						onRightClick : AdminRightClick
					},
				data : {
					simpleData : {
						enable : true
					},
					key : {
						name : "name"
					}
				}
			};
			data.push({id:0,name:"管理员",open:true});
			$.fn.zTree.init($("#admin"), admin_setting, data);
		},
		erro:function(){
			alert(erro)
		}
	})
}
function initRoleTree() {
	/*初始化角色组树*/
	$.ajax({
		url:"/grouplist",
		type:'post',
		success:function(data){
			var role_setting = {
					check: {
						enable: true,
						chkStyle: "radio"
					},
					data : {
						simpleData : {
							enable : true
						},
						key : {
							name : "roleName"
						}
					},
					callback : {
						onClick : function(event, treeId, treeNode) {
							selectmenu(event, treeId, treeNode);
						},
						onCheck: function(event, treeId, treeNode) {
							selectmenu(event, treeId, treeNode);
						},
						onRightClick : RoleRightClick
					}
			};
			data.push({id:0,roleName:"角色组",open:true,"nocheck":true});
			$.fn.zTree.init($("#role"), role_setting, data);
		},
		erro:function(){
			alert(erro)
		}
	})
}
function initMenuTree() {
	/*初始化菜单树*/
	$.ajax({
		url:"/menulist",
		type:'post',
		success:function(data){
			var menu_setting = {
					check: {
						enable: true,
						chkStyle: "checkbox"
					},
					data : {
						simpleData : {
							enable : true,
							pIdKey : "pId" 		//很关键
						},
						key : {
							name : "menuName"
						},
						keep: {
							parent: true
						}
					},
					callback : {
						onClick : function(event, treeId, treeNode) {
							$.fn.zTree.getZTreeObj(treeId).checkNode(treeNode,true)
							event.preventDefault();	//阻止点击子菜单url跳转
						},
						onRightClick : MenuRightClick
					}
			};
			 $.fn.zTree.init($("#menu"), menu_setting, data).expandAll(true);
		},
		erro:function(){
			alert(erro)
		}
	}) 
}


function rightcss(event,rMenuId) { //设置右键菜单的位置、可见
	rMenuId.css({"top":event.clientY-140+"px", "left":event.clientX-200+"px", "visibility":"visible"});
}
//鼠标按下事件
function onBodyMouseDown(){
	$("#adminMenu").css({
		"visibility" : "hidden"
	});
	$("#roleMenu").css({
		"visibility" : "hidden"
	});
	$("#menuMenu").css({
		"visibility" : "hidden"
	});
}
//鼠标移除菜单层
function divout() {
	$("body").bind("mousedown", onBodyMouseDown);
}
//鼠标移入菜单层
function divover() {
	$("body").unbind("mousedown", onBodyMouseDown);
}
//判断是否为父节点
function isroot(id){
	 if(id==0){//如果是父节点则禁用其他选项
		 $('.tree_top').show();
         $('.tree_item').hide();
     }else{
    	 $('.tree_top').hide();
    	 $('.tree_item').show();
     }  
}

//管理员树部分开始
var adminMenuId=$("#adminMenu");
//选中管理员节点显示对应的角色组和菜单
function selectadmin(event, treeId, treeNode) {
	var roleTree = $.fn.zTree.getZTreeObj("role");
	// 先清空原本选中的角色选项
	var checkedNodes = roleTree.getCheckedNodes(true);
	if (checkedNodes.length > 0) {
		roleTree.checkNode(checkedNodes[0], false);
	}
	// 先清空原本选中的菜单选项
	var menuTree = $.fn.zTree.getZTreeObj("menu");
	menuTree.checkAllNodes(false);
	
	var rolenode=roleTree.getNodeByParam("id",treeNode.groupId)
	roleTree.checkNode(rolenode,true)
	
	$.ajax({
		url:'/group_menu',
		type:'post',
		data:{ groupId:treeNode.groupId },
		success:function(data){
			for (var i = 0; i < data.length; i++) {
				menuTree.checkNode(menuTree.getNodeByParam("id",data[i].menuId), true);
			}
		}
	})
}
// 在ztree上的右击事件
function AdminRightClick(event, treeId, treeNode) {
		$.fn.zTree.getZTreeObj(treeId).selectNode(treeNode);
        showAdminMenu("node", event,treeNode); 
}
//显示右键菜单
function showAdminMenu(type, event,treeNode) {
	isroot(treeNode.id)
	rightcss(event,adminMenuId)
}
//管理员树部分结束

//角色树部分开始
var roleMenuId=$("#roleMenu");
//选中角色组显示对应的菜单
function selectmenu(event, treeId, treeNode) {
	$.fn.zTree.getZTreeObj("role").checkNode(treeNode,true);
	$.ajax({
		url:'/group_menu',
		type:'post',
		data:{ groupId:treeNode.id },
		success:function(data){
			var menuTree = $.fn.zTree.getZTreeObj("menu");
			menuTree.checkAllNodes(false);
			for (var i = 0; i < data.length; i++) {
				menuTree.checkNode(menuTree.getNodeByParam("id",data[i].menuId), true);
			}
		}
	})
}
// 在ztree上的右击事件
function RoleRightClick(event, treeId, treeNode) {
		$.fn.zTree.getZTreeObj(treeId).selectNode(treeNode);
		$.fn.zTree.getZTreeObj(treeId).checkNode(treeNode,true)
		showRoleMenu("node", event,treeNode); 
}
//显示右键菜单
function showRoleMenu(type, event,treeNode) {
	isroot(treeNode.id)
	rightcss(event,roleMenuId)
}
//角色树部分结束

//菜单树部分开始
var menuMenuId=$("#menuMenu");
// 在ztree上的右击事件
function MenuRightClick(event, treeId, treeNode) {
		$.fn.zTree.getZTreeObj(treeId).selectNode(treeNode);
		$.fn.zTree.getZTreeObj(treeId).checkNode(treeNode,true)
		showmenuMenu("node", event,treeNode); 
}
//显示右键菜单
function showmenuMenu(type, event,treeNode) {
	isroot(treeNode.parentId)
	rightcss(event,menuMenuId)  
}
//菜单树部分结束

//分配角色开始
function assignGroup() {
	var adminNodes = $.fn.zTree.getZTreeObj("admin").getSelectedNodes();//这是个获取所有被选中的节点集合
	var roleNodes = $.fn.zTree.getZTreeObj("role").getCheckedNodes(true);//这是个获取所有被勾选的节点集合
	if (adminNodes.length <= 0) {
		alert("未选中管理员！");
		return;
	}
	if (adminNodes[0].id == '0'||roleNodes[0].id=='0') {
		alert("不能为根节点分配角色组！");
		return;
	}
	if (roleNodes.length <= 0) {
		alert("未选择角色组！");
		return;
	}
	$.ajax({
		url:'/admin/role',
		type:'post',
		data:{
			adminId:adminNodes[0].id,
			groupId:roleNodes[0].id
		},
		success:function(data){
			initAdminTree()
			if(data=="succ"){ 
				alert('分配角色成功！')
				initRoleTree()
			}
			else{ alert(data+erro) }
		},
		erro:function(){
			alert(erro)
		}
	})
}
//分配角色结束

//分配菜单开始
function assignMenu() {
	var roleNodes = $.fn.zTree.getZTreeObj("role").getSelectedNodes();
	var menuNodes = $.fn.zTree.getZTreeObj("menu").getCheckedNodes();
	if (roleNodes.length <= 0) {
		alert("未选中角色组！");
		return;
	}
	if (roleNodes[0].id == '0') {
		alert("不能为根节点分配菜单！");
		return;
	}if(menuNodes.length <= 0){
		alert("未选中菜单！");
		return;
	}
	var menuIds=''
	for (var i = 0; i < menuNodes.length; i++) {
		menuIds+=menuNodes[i].id+',';
	}
	var menuIdsresult=menuIds.substring(0,menuIds.length-1)//去除最后一个逗号
	$.ajax({
		url:'/group/menu',
		type:'post',
		data:{
			groupId:roleNodes[0].id,
			menuIds:menuIdsresult
		},
		success:function(data){
			if(data=="succ"){ 
				alert('分配菜单成功！') 
			}
			else{ alert(data+erro) }
		},
		erro:function(){
			alert(erro)
		}
	})
}
//分配菜单结束

//管理员弹窗部分开始
var AdminName=$('[name=name]:input')
var AdminPassword=$('[name=password]:input')
var AdminId=$('[name=adminId]:input')
function admininput() {
	var nodes = $.fn.zTree.getZTreeObj("admin").getSelectedNodes();
	if(nodes[0].id==0){	//父节点 >-- 新增，清空输入框的值
		AdminName.val('')
		AdminPassword.val('')
		AdminId.val('')
	}else{
		AdminName.val(nodes[0].name)
		AdminPassword.val(nodes[0].password)
		AdminId.val(nodes[0].id)
	}
}
function save_admin() {
	var name=AdminName.val()
	var password=AdminPassword.val()
	var id=AdminId.val()
	if(name!=''&&password!=''){//新增时id为空
		$.ajax({
			url:'/admin/add_update',
			type:'post',
			data:{
				name:name,
				password:password,
				id:id
			},
			success:function(data){
				if(data=='succ'){ 
					alert('操作成功！')
					initAdminTree();
					$('#adminmodal').modal('hide')
					}
				else{ alert(erro) }
			},
			erro:function(){ alert(erro)  }
		})
	}else{
		alert('内容不得为空！')
	}
}
//管理员弹窗部分结束
//删除管理员开始
function deleteAdmin() {
	if(window.confirm('确定要删除该管理员吗？')){
		onBodyMouseDown()//隐藏右键菜单
		var nodes = $.fn.zTree.getZTreeObj("admin").getSelectedNodes();
		if(nodes[0].id!=''&&nodes[0].name!=''){
			$.ajax({
				url:'/admin/delete',
				type:'post',
				data:{
					id:nodes[0].id,
					name:nodes[0].name
				},
				success:function(data){
					if(data=='succ'){ 
						alert('删除成功！')
						initAdminTree();
					}else{ alert(erro) }
				},
				erro:function(){ alert(erro) }
			})
		}else{ alert('未选中管理员') }
	}
}
//删除管理员结束

//角色组管理弹窗部分开始
var RoleName=$('[name=roleName]:input')
var RoleId=$('[name=RoleId]:input')
function roleinput() {
	var nodes = $.fn.zTree.getZTreeObj("role").getSelectedNodes();
	if(nodes[0].id==0){	//父节点 >-- 新增，清空输入框的值
		RoleName.val('')
		RoleId.val('')
	}else{
		RoleName.val(nodes[0].roleName)
		RoleId.val(nodes[0].id)
	}
}
function save_role() {
	var roleNameval=RoleName.val()
	var RoleIdval=RoleId.val()
	if(roleNameval!=''){//新增时id为空
		$.ajax({
			url:'/group/add_update',
			type:'post',
			data:{
				roleName:roleNameval,
				id:RoleIdval
			},
			success:function(data){
				if(data=='succ'){ 
					alert('操作成功！')
					initRoleTree();
					$('#Rolemodal').modal('hide')
				}
				else{ alert(erro) }
			},
			erro:function(){ alert(erro)  }
		})
	}else{ alert('内容不得为空') }
}
//角色组管理弹窗部分结束
//删除角色开始
function deleteRole() {
	if(window.confirm('确定要删除该角色吗？')){
		onBodyMouseDown()//隐藏右键菜单
		var nodes = $.fn.zTree.getZTreeObj("role").getSelectedNodes();
		if(nodes[0].id!=''&&nodes[0].roleName!=''){
			$.ajax({
				url:'/group/delete',
				type:'post',
				data:{
					id:nodes[0].id,
					roleName:nodes[0].roleName
				},
				success:function(data){
					if(data=='succ'){ 
						alert('删除成功！')
						initRoleTree();
					}else{ alert(erro) }
				},
				erro:function(){ alert(erro) }
			})
		}else{ alert('未选中角色') }
	}
}
//删除角色结束

//主菜单弹窗部分开始
var MainMenuName=$('[name=MainMenuName]:input')
var MainMenuId=$('[name=MainMenuId]:input')
function MainMenuinput(str) {
	var nodes = $.fn.zTree.getZTreeObj("menu").getSelectedNodes();
	if(str=='add'){	//父节点 >-- 新增，清空输入框的值
		MainMenuName.val('')
		MainMenuId.val('');
	}else{
		MainMenuName.val(nodes[0].menuName)
		MainMenuId.val(nodes[0].id)
	}
}
function save_MainMenu() {	
	var MainMenuNameVal=MainMenuName.val()
	var MainMenuIdVal=MainMenuId.val()
	if(MainMenuNameVal!=''){ //新增时id为空
		$.ajax({
			url:'/menu/main',
			type:'post',
			data:{
				menuName:MainMenuNameVal,
				id:MainMenuIdVal
			},
			success:function(data){
				if(data=='succ'){ 
					alert('操作成功！')
					initMenuTree();
					$('#MainMenuModal').modal('hide')
				}
				else{ alert(erro) }
			},
			erro:function(){ alert(erro)  }
		})
	}else{ alert('内容不得为空') }
}
//主菜单弹窗部分结束

//删除主菜单开始
function deleteMainMenu(){
	if(window.confirm('确定要删除该主菜单和子菜单吗？')){
		onBodyMouseDown()//隐藏右键菜单
		var nodes = $.fn.zTree.getZTreeObj("menu").getSelectedNodes();
		var cs=nodes[0].children
		var Ids=''
		for(var i=0;i<cs.length;i++){
			Ids+=cs[i].id+','
		}
		var ChildIds=Ids.substring(0,Ids.length-1)
		if(nodes[0].id!=''&&nodes[0].menuName!=''){
			$.ajax({
				url:'/mainMenu/delete',
				type:'post',
				data:{
					id:nodes[0].id,
					ChildIds:ChildIds
				},
				success:function(data){
					if(data=='succ'){ 
						alert('删除成功！')
						initMenuTree();
					}else{ alert(erro) }
				},
				erro:function(){ alert(erro) }
			})
		}else{ alert('未选中主菜单') }
	}
}
//删除主菜单结束


//子菜单弹窗部分开始
var ChildMenuName=$('[name=ChildMenuName]:input')
var ChildMenuId=$('[name=ChildMenuId]:input')
var ThisParentMenuId=$('[name=ParentMenuId]:input')
var url=$('[name=url]:input')
function ChildMenuinput(){
	var nodes = $.fn.zTree.getZTreeObj("menu").getSelectedNodes();
	if(nodes[0].parentId==0){	//父节点 >-- 新增，清空输入框的值
		ThisParentMenuId.val(nodes[0].id)
		ChildMenuName.val('')
		ChildMenuId.val('')
		url.val('')
	}else{
		ThisParentMenuId.val('')
		ChildMenuName.val(nodes[0].menuName)
		ChildMenuId.val(nodes[0].id)
		url.val(nodes[0].url)
	}
}
function save_ChildMenu(){
	var ChildMenuNameVal=ChildMenuName.val()
	var ChildMenuIdVal=ChildMenuId.val()
	var ThisParentMenuIdVal=ThisParentMenuId.val()
	var urlVal=url.val()
	if(ChildMenuNameVal!=''&&urlVal!=''){ //新增时id为空
		$.ajax({
			url:'/menu/child',
			type:'post',
			data:{
				menuName:ChildMenuNameVal,
				id:ChildMenuIdVal,
				parentId:ThisParentMenuIdVal,
				url:urlVal
			},
			success:function(data){
				if(data=='succ'){ 
					alert('操作成功！')
					initMenuTree();
					$('#ChildMenuModal').modal('hide')
				}
				else{ alert(erro) }
			},
			erro:function(){ alert(erro)  }
		})
	}else{ alert('内容不得为空') }
}
//子菜单弹窗部分结束

//删除子菜单开始
function deleteChildMenu(){
	if(window.confirm('确定要删除该子菜单吗？')){
		onBodyMouseDown()//隐藏右键菜单
		var nodes = $.fn.zTree.getZTreeObj("menu").getSelectedNodes();
		if(nodes[0].id!=''&&nodes[0].menuName!=''){
			$.ajax({
				url:'/childMenu/delete',
				type:'post',
				data:{
					id:nodes[0].id
				},
				success:function(data){
					if(data=='succ'){ 
						alert('删除成功！')
						initMenuTree();
					}else{ alert(erro) }
				},
				erro:function(){ alert(erro) }
			})
		}else{ alert('未选中子菜单') }
	}
}
//删除子菜单结束